package com.ssy.lingxi.transaction.entity;

import com.fasterxml.jackson.annotation.JsonManagedReference;
import com.ssy.lingxi.transaction.api.dto.request.EnclosureUrlsRequest;
import com.ssy.lingxi.transaction.handler.converter.JpaJsonToEnclosureUrlsRequestListConverter;
import lombok.Getter;
import lombok.Setter;

import javax.persistence.*;
import java.util.List;

/**
 * 报价单
 * @author wrc
 * @date 2020/7/21
 */
@Getter
@Setter
@Entity
@Table(schema = "public", name = "trade_quote")
public class Quote {

    @Id
    @GeneratedValue(strategy= GenerationType.SEQUENCE,generator="quote_seq")
    @SequenceGenerator(sequenceName="trade_quote_seq", name="quote_seq",allocationSize = 1)
    private Long id;

    /**
     *询价单编号
     */
    private String inquiryListNo;

    /**
     * 交付说明
     */
    private String deliveryInstructions;

    /**
     *询价单编号
     */
    private Long inquiryListId;

    /**
    * 报价单号
    */
    private String quotationNo;

    /**
     * 报价单摘要
     */
    private String details;

    /**
     * 交付日期
     */
    private Long deliveryTime;

    /**
     * 交付地址详情
     */
    private String fullAddress;

    /**
     * 交付地址ID
     */
    private Long fullAddressId;

    /**
     * 报价要求
     */
    private String offer;

    /**
     * 报价截止时间
     */
    private Long quotationAsTime;

    /**
     * 单据时间
     */
    private Long voucherTime;

    /**
     * 询价报价--外部状态： 1.待提交询价单 2.待提交询价报价单 3.确认报价单 4.报价通过 5.报价不通过
     */
    private Integer externalState;

    /**
     * 询价报价--内部状态: 1.待提交审核 2.审核报价单 3.审核报价单2级 4.提交询价单 5.审核通过 6.审核不通过
     */
    private Integer interiorState;

    /**
     * 确认询价报价--内部状态: 1.待提交审核 2.审核报价单 3.审核报价单2级 4.提交询价单 5.审核通过 6.审核不通过
     */
    private Integer confirmInteriorState;

    /**
     * 确认询价报价内部工作流流程taskId
     */
    private String confirmInteriorTaskId;

    /**
     * 外部工作流流程taskId
     */
    private String externalTaskId;

    /**
     * 内部工作流流程taskId
     */
    private String interiorTaskId;

    /**
     * 联系人id
     */
    private Long contactId;

    /**
     * 联系人姓名
     */
    private String contactName;

    /**
     * 联系人电话国标码
     */
    private String phoneCode;

    /**
     * 联系人电话
     */
    private String contactPhone;

    /**
     * 最小起订
     */
    private Double minimumOrder;

    /**
     * 付款方式
     */
    private String paymentType;

    /**
     * 税费要求
     */
    private String taxes;

    /**
     * 物流要求
     */
    private String logistics;

    /**
     * 包装要求
     */
    private String packRequire;

    /**
     * 其他要求
     */
    private String otherRequire;

    /**
     * 附件链接集合
     */
    @Column(columnDefinition = "jsonb")
    @Convert(converter = JpaJsonToEnclosureUrlsRequestListConverter.class)
    private List<EnclosureUrlsRequest> enclosureUrls;

    /**
     * 商品单价和图片
     */
    @JsonManagedReference
    @OneToMany(mappedBy = "quote", cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, fetch = FetchType.EAGER)
    private List<InquiryProduct> inquiryProductList;

    /**
     * 创建时间
     */
    private Long createTime;

    /**
     * 更新时间
     */
    private Long updateTime;

    /**
     * 创建会员ID
     */
    private Long createMemberId;

    /**
     * 创建会员名字
     */
    private String createMemberName;

    /**
     * 创建人会员角色ID
     */
    private Long createRoleId;

    /**
     * 创建人会员角色名称
     */
    private String createRoleName;

    /**
     * 创建人用户id
     */
    private Long userId;

    /**
     * 创建人用户名称
     */
    private String userName;

    /**
     * 询价方用户id
     */
    private Long inquiryUserId;

    /**
     * 询价方用户名称
     */
    private String inquiryUserName;

    /**
     * 商城id
     */
    private Long shopId;

    /**
     * 询价会员
     */
    private String memberName;

    /**
     * 询价会员id
     */
    private Long memberId;

    /**
     * 询价会员id
     */
    private Long memberRoleId;
}
